#!/bin/bash
#desc : cut log 
#eg: 

log_name_date=`date +%F-%H-%M`
log_date_dir=/data3/logs/nginx/accesslog/`date +%Y%m%d`
HOUR_MIN=`date +%H%M`
[[ `date +'%H%M'` -eq 0 ]] && exit 1
function split_log(){
	log_name="${1##*/}"
	log_path="${1%/*}"
	echo $log_name
	echo $log_path
	[ ! -d "$log_path" ] && mkdir -p "$log_path"
	cd $log_path
	if [ -e  $log_name ];then
		[ ! -d "$log_date_dir" ] && mkdir "$log_date_dir"
		# 如果传入了时间参数，则在指定的 小时+分钟 时间执行一次
		if [ -n "$2" ];then
			# 如果传入时间参数 == 当前时间的时分，则切分文件，
			# 注意，要保证 crontab 中，该脚本每天 23:59 被执行一次。
			if [ $HOUR_MIN = "$2" ];then
				mv $log_name  ${log_date_dir}/$log_name 
				kill -USR1 `cat /var/run/nginx.pid`
				sleep 1
			fi
		# 如果没传入时间，则按crontab的时间间隔分割文件
		else	
			mv $log_name  ${log_date_dir}/$log_name.${log_name_date}
			kill -USR1 `cat /var/run/nginx.pid`
			sleep 1
		fi
	fi
}

# 传入 小时+分钟，则每天分割一个文件，如 2359 则在每天 23:59 点切换的时候切一个文件
# 否则每天会按 crontab 切割多个文件
split_log "/usr/share/nginx/logs/api_response.access.log" &
split_log "/usr/share/nginx/logs/apptrack.access.log" &
split_log "/usr/share/nginx/logs/nobita.access.log" &
split_log "/usr/share/nginx/logs/doraemon.access.log" &
#split_log "/data1/logs/nginx/app/click/" "2359"



